Storage resource scan

ABSTRACT

Various information about storage resources in a UNIX or UNIX derivative operating system computing environment is gathered from various sources in response to scan requests. Where a given type of information for a given storage resource is gathered from multiple sources, the information is verified for consistency, and placed in a single file in an industry standard hierarchical format. Scan threads are timed to provide reliable performance.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority under 35 U.S.C. §119 to U.S. Provisional Application No. 60/714,408, filed Sep. 6, 2005, which is herein incorporated by reference in its entirety.

This application contains subject matter which is related to the subject matter of the following applications, each of which is assigned to the same assignee as this application and filed on the same day as this application. Each of the below listed applications is hereby incorporated herein by reference in its entirety:

U.S. patent application Ser. No. ______, by Malkin et al., entitled “REDUNDANT APPLIANCE CONFIGURATION REPOSITORY IN STANDARD HIERARCHICAL FORMAT” (Attorney Docket No. 2660.002A)

U.S. patent application Ser. No. ______, by Malkin et al., entitled “LIGHTWEIGHT MANAGEMENT AND HIGH AVAILABILITY CONTROLLER” (Attorney Docket No. 2660.003A)

U.S. patent application Ser. No. ______, by Kirill Malkin, entitled “BLOCK SNAPSHOTS OF iSCSI” (Attorney Docket No. 2660.004A)

U.S. patent application Ser. No. ______, by Kirill Malkin, entitled “GENERATING DIGEST FOR BLOCK RANGE VIA iSCSI” (Attorney Docket No. 2660.005A)

U.S. patent application Ser. No. ______, by Kirill Malkin, entitled “INCREMENTAL REPLICATION USING SNAPSHOTS” (Attorney Docket No. 2660.006A)

U.S. patent application Ser. No. ______, by Kirill Malkin, entitled “PERFORMANCE IMPROVEMENT FOR BLOCK SPAN REPLICATION” (Attorney Docket No. 2660.007A)

U.S. patent application Ser. No. ______, by Dmitry Fomichev, entitled “REUSING TASK OBJECT AND RESOURCES” (Attorney Docket No. 2660.008A)

BACKGROUND OF THE INVENTION

1. Technical Field

The present invention generally relates to scanning and reporting on storage resources. More particularly, the present invention relates to scanning and reporting on storage resources in a UNIX or UNIX derivative operating system computing environment.

2. Background Information

In UNIX, LINUX and other UNIX derivative operating systems, information about storage resources, such as type, size, manufacturer, serial number, etc., is scattered across various utilities, configuration and kernel access files. Each of the sources for obtaining the information also typically has its own format and protocol.

For example, the size of a physical storage resource in a UNIX or UNIX derivative environment can typically be found in at least three ways: sending a query to the operating system using a system service such as “ioctl,” which will return the total number of blocks for the storage device; opening a special system file in the “/proc” directory tree and locating the storage device in the table; and sending a low-level query to the storage device itself, for example, issuing the SCSI command “READ_CAPACITY” or the ATA command “IDENTIFY.”

This seemingly haphazard design for the location and accessing of storage resource information creates a challenge for, and results in more complex, storage management software in such environments.

Thus, a need exists for a simpler way to access storage resource information in UNIX and UNIX derivative operating system computing environments.

SUMMARY OF THE INVENTION

Briefly, the present invention satisfies the need for a simpler way to access storage resource information in UNIX and UNIX derivative operating system computing environments by providing a single point of reference for such information in a standard hierarchical format.

In accordance with the above, it is an object of the present invention to provide a way to access storage resource information in UNIX and UNIX derivative operating system computing environments.

The present invention provides, in a first aspect, a method of providing storage resource information in a UNIX or UNIX derivative operating system computing environment. The method comprises collecting information about a storage resource in a UNIX or UNIX derivative operating system computing environment, and assembling the collected information into a single file in a standard hierarchical format.

The present invention provides, in a second aspect, a method of reliably completing a storage resource scan in a UNIX or UNIX derivative operating system computing environment. The method comprises initiating at least one scan thread for a storage resource in a UNIX or UNIX derivative operating system computing environment, and excluding at least one of the at least one scan thread from scan results after a predetermined time.

The present invention also provides systems and program products implementing the methods of the first and second aspects.

These, and other objects, features and advantages of this invention will become apparent from the following detailed description of the various aspects of the invention taken in conjunction with the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of one example of a LINUX computing environment implementing the present invention.

FIG. 2 is a flow diagram of one example of a method of the present invention.

FIG. 3 is a flow diagram of another example of a method of the present invention.

DETAILED DESCRIPTION OF THE INVENTION

In a UNIX or UNIX derivative operating system environment, different types of information about storage resources is obtained from various sources. This can be done, for example, in response to scan requests for storage resources. All information of the same type for a given resource that is gathered from multiple sources is analyzed for inconsistencies, and any inconsistencies are resolved in some fashion. All of the different types of information are placed in a single file in a standard hierarchical format.

FIG. 1 is a simplified block diagram of a computing environment 100 implementing the present invention. The environment comprises a network, for example, a local area network or wide area network. A plurality of clients, for example, clients 102, 104 and 106 exist on the network, and send various requests to an operating system 108 intended for a resource scanner 110. The clients are, for example, software modules requiring information about one or more storage resources, for example, storage resources 112, 114 and/or 116. Examples of such software modules include storage resource management software, and storage resource availability manager software. The clients can physically reside in one or more computing units or servers, either together or separately.

The operating system comprises, for example, UNIX or a UNIX derivative, for example, some form of LINUX. The resource scanner comprises, for example, a software server operating in accordance with the principles of the present invention, performing the client requests for information regarding the storage resources. There may be multiple scan threads for any given resource at any given time. Each storage resource has associated therewith a controller and driver. For example, controller 118 and driver 120 are associated with storage resource 112. The controllers control access to the resources, and the drivers, which may be software drivers residing in the operating system, facilitates the flow of data into and out of the associated storage resource.

One example of a method of providing storage resource information in accordance with the present invention will now be described with reference to the computing environment 100 of FIG. 1, in conjunction with a flow diagram 200 of FIG. 2. Assume that client 102 has requested information about storage resource 112. The request initially goes to operating system 108, which forwards it to scanner 110 for servicing. Scanner 110 then issues a request to controller 118. Depending on the type of information requested, the controller may have it, or may need to query resource 112 via driver 120.

Thus information is collected about a given storage resource (Step 202). Preferably, a given type of information is collected from at least one two different sources, when possible. In the present example, assume that the same information is also available through the operating system, which can be queried by the scanner. Where a given type of information collected from at least two sources, the information is preferably verified for consistency (Step 204). In the present example, the scanner compares the information to confirm its consistency from the two sources. Where inconsistencies exist (atypical), it usually signifies some type of failure of some entity in the process, frequently the controller or storage resource. In such a situation, either the scan is restarted, or the resource is declared as failed. The information is then assembled into a single file in a hierarchical standard format (Step 206). In the present example, the scanner adds the information to an XML file, which may then be accessed by client 102. In this way, there is a single point of standardized access to the information.

The types of information available for a given storage resource varies depending on the resource. Generally, the different types of information available include, for example, type, model number, vendor name, size, manufacturer's unique ID, serial number, system name for the storage resource, whether the storage resource is enabled or disabled, and some details regarding the information on the storage resource, such as, for example, file system label, virtual volume label, RAID super block, and partition table.

As noted above, the information is gathered and placed in a single file in a standard hierarchical format. Any hierarchical format now known or later developed can be used, so long as it has a flexible and extensible hierarchical data organization with hierarchically interconnected (e.g., nested) nodes (e.g., objects), each node having attributes or properties. A strong hierarchy allows for specifying multiple configurations and for easily introducing diverse nodes, without complicating the navigation of the file. Perhaps the best currently known example of such a hierarchical format, and the preferred format, is XML. Another example is the “ini” format, though well-known “tricks” to allow for nesting would need to be applied. For example, since the beginning of the next section is also the end of the previous, i.e., no breaks, nesting can be simulated by declaring subsections and paragraphs in the following manner: [section-name.subsection-name.paragraph . . . ]. While the “ini” format is not preferred, and can quickly become unruly with nesting, in theory it could be used.

In a variation of the method of FIG. 2, where at least two different types of information about a storage resource are requested, each of the types of information is preferably collected from at least two different sources, if possible. If only one source is available, then it need not be verified for consistency, but for a given type of information collected from at least two sources, the information is preferably verified for consistency. Inconsistencies are handled in the same manner. The information is then placed in a single file in a standard hierarchical format.

In another aspect of the present invention, a method of reliably completing a resource scan in a UNIX or UNIX derivative operating system computing environment where one or more resources may unexpectedly fail, is provided. Threads initiated for a scan request from clients are time-limited to achieve reliability in the completion of storage resource scans, such that a completion of a scan is based on time, not actual completion of all scan threads. The time limit can be blanket, regardless of the type of storage device, or it could be specific to the type of device. However, scan threads that do not complete in the predetermined time may be monitored and maintained in a queue.

The method will be described with reference to the flow diagram 300 of FIG. 3. One or more scan threads are initiated (Step 302). If a given scan thread has completed within a predetermined time (Inquiry 304), then it is included in the scan results. However, if it has not completed within the predetermined time, it is placed in a queue for further execution until completion (Step 308). In addition, the scan is excluded from the results, which otherwise proceeds normally (Step 310).

When a thread in the queue finishes, the normal sequence of events for an ending thread take place. The new scan results are preferably not provided to the originally requesting client, however, since the results without this information were already reported to the client. The new results may instead be used to determine whether a new scan should be initiated for the storage resource. For example, if the scan returns an error, then a new scan may be increasingly delayed until the resource recovers. No query is initiated for any resource with an active scan thread, or any resource with a scan returning an error. Examples of errors include a response time-out, an internal storage resource error, and block read error due to a damaged block or corrupt data. For resources returning such errors, scans may begin again, for example, with a new client request. However, resources returning a predetermined number of errors consecutively may be declared “deadbeat” and removed from potential scans.

The above-described computing environment and/or computing units are only offered as examples. The present invention can be incorporated and used with many types of computing units, computers, processors, nodes, systems, work stations and/or environments without departing from the spirit of the present invention.

The present invention can include at least one program storage device readable by a machine, tangibly embodying at least one program of instructions executable by the machine to perform the capabilities of the present invention. The program storage device can be provided separately, or as a part of a computing unit.

The figures depicted herein are just exemplary. There may be many variations to these diagrams or the steps (or operations) described therein without departing from the spirit of the invention. For instance, the steps may be performed in a differing order, or steps may be added, deleted or modified. All of these variations are considered a part of the invention.

While several aspects of the present invention have been described and depicted herein, alternative aspects may be effected by those skilled in the art to accomplish the same objectives. Accordingly, it is intended by the appended claims to cover all such alternative aspects as fall within the true spirit and scope of the invention. 

1. A method of providing storage resource information in a UNIX or UNIX derivative operating system computing environment, the method comprising: collecting information about a storage resource in a UNIX or UNIX derivative operating system computing environment; and assembling the collected information into a single file in a standard hierarchical format.
 2. The method of claim 1, further comprising receiving a request for the information prior to the collecting and assembling.
 3. The method of claim 2, wherein the receiving, collecting and assembling are performed by a resource scanner of the computing environment.
 4. The method of claim 1, wherein the assembling comprises assembling the collected information into a single XML file.
 5. The method of claim 1, wherein the collecting comprises collecting the information from at least two different sources in the computing environment, the method further comprising verifying the collected information for consistency prior to the assembling.
 6. The method of claim 1, wherein the collecting comprises collecting at least two different types of information about the storage resource.
 7. The method of claim 6, wherein at least one of the at least two different types of information is collected from at least two different sources in the computing environment, the method further comprising verifying the collected information for consistency prior to the assembling.
 8. The method of claim 6, further comprising receiving at least one request for the at least two different types of information prior to the collecting and assembling.
 9. The method of claim 8, wherein the receiving, collecting and assembling are performed by a resource scanner of the computing environment.
 10. The method of claim 6, wherein the assembling comprises assembling the collected information into a single XML file.
 11. A method of reliably completing a storage resource scan in a UNIX or UNIX derivative operating system computing environment, the method comprising: initiating at least one scan thread for a storage resource in a UNIX or UNIX derivative operating system computing environment; and excluding at least one of the at least one scan thread from scan results after a predetermined time.
 12. The method of claim 11, further comprising placing the at least one of the at least one scan thread into a queue for continued execution until completion.
 13. The method of claim 12, further comprising determining whether to rescan the storage resource based on new scan results including results of the at least one of the at least one scan thread.
 14. The method of claim 11, further comprising receiving a scan request for the storage resource prior to the initiating and excluding.
 15. A system for providing storage resource information in a UNIX or UNIX derivative operating system computing environment, the system comprising: means for collecting information about a storage resource in a UNIX or UNIX derivative operating system computing environment; and means for assembling the collected information into a single file in a standard hierarchical format.
 16. The system of claim 15, further comprising means for receiving a request for the information prior to the collecting and assembling.
 17. The system of claim 16, wherein the means for receiving, means for collecting and means for assembling comprise a resource scanner of the computing environment.
 18. The system of claim 15, wherein the means for assembling comprises means for assembling the collected information into a single XML file.
 19. The system of claim 15, wherein the means for collecting comprises means for collecting the information from at least two different sources in the computing environment, the method further comprising means for verifying the collected information for consistency prior to the assembling.
 20. The system of claim 15, wherein the means for collecting comprises means for collecting at least two different types of information about the storage resource.
 21. The system of claim 20, wherein at least one of the at least two different types of information is collected from at least two different sources in the computing environment, the method further comprising means for verifying the collected information for consistency prior to the assembling.
 22. The system of claim 20, further comprising means for receiving at least one request for the at least two different types of information prior to the collecting and assembling.
 23. The system of claim 22, wherein the means for receiving, means for collecting and means for assembling comprise a resource scanner of the computing environment.
 24. The system of claim 20, wherein the means for assembling comprises means for assembling the collected information into a single XML file.
 25. A system for reliably completing a storage resource scan in a UNIX or UNIX derivative operating system computing environment, the system comprising: a storage resource coupled to a UNIX or UNIX derivative operating system computing environment; means for initiating at least one scan thread for the storage resource; and means for excluding at least one of the at least one scan thread from scan results after a predetermined time.
 26. The system of claim 25, further comprising means for placing the at least one of the at least one scan thread into a queue for continued execution until completion.
 27. The system of claim 26, further comprising means for determining whether to rescan the storage resource based on new scan results including results of the at least one of the at least one scan thread.
 28. The system of claim 25, further comprising means for receiving a scan request for the storage resource prior to the initiating and excluding.
 29. At least one program storage device readable by a machine tangibly embodying at least one program of instructions executable by the machine to perform a method of providing storage resource information in a UNIX or UNIX derivative operating system computing environment, the method comprising: collecting information about a storage resource in a UNIX or UNIX derivative operating system computing environment; and assembling the collected information into a single file in a standard hierarchical format.
 30. The at least one program storage device of claim 29, further comprising receiving a request for the information prior to the collecting and assembling.
 31. The at least one program storage device of claim 30, wherein the receiving, collecting and assembling are performed by a resource scanner of the computing environment.
 32. The at least one program storage device of claim 29, wherein the assembling comprises assembling the collected information into a single XML file.
 33. The at least one program storage device of claim 29, wherein the collecting comprises collecting the information from at least two different sources in the computing environment, the method further comprising verifying the collected information for consistency prior to the assembling.
 34. The at least one program storage device of claim 29, wherein the collecting comprises collecting at least two different types of information about the storage resource.
 35. The at least one program storage device of claim 34, wherein at least one of the at least two different types of information is collected from at least two different sources in the computing environment, the method further comprising verifying the collected information for consistency prior to the assembling.
 36. The at least one program storage device of claim 34, further comprising receiving at least one request for the at least two different types of information prior to the collecting and assembling.
 37. The at least one program storage device of claim 36, wherein the receiving, collecting and assembling are performed by a resource scanner of the computing environment.
 38. The at least one program storage device of claim 34, wherein the assembling comprises assembling the collected information into a single XML file.
 39. At least one program storage device readable by a machine tangibly embodying at least one program of instructions executable by the machine to perform a method of reliably completing a storage resource scan in a UNIX or UNIX derivative operating system computing environment, the method comprising: initiating at least one scan thread for a storage resource in a UNIX or UNIX derivative operating system computing environment; and excluding at least one of the at least one scan thread from scan results after a predetermined time.
 40. The at least one program storage device of claim 39, further comprising placing the at least one of the at least one scan thread into a queue for continued execution until completion.
 41. The at least one program storage device of claim 40, further comprising determining whether to rescan the storage resource based on new scan results including results of the at least one of the at least one scan thread.
 42. The at least one program storage device of claim 40, further comprising receiving a scan request for the storage resource prior to the initiating and excluding. 